#include <stdio.h>

/**
 * @brief 冒泡排序函数，时间复杂度O(n^2)，空间复杂度O(1)，适合小规模数据排序
 * @param arr 待排序数组
 * @param n 数组长度
 * @return 0表示成功，-1表示失败
 */

void bubbleSort(char arr[], int n)
{
  for (int i = 0; i < n - 1; i++)
  {
    int swapped = 0;
    for (int j = 0; j < n - 1 - i; j++)
    {
      if (arr[j] > arr[j + 1])
      {
        // 交换相邻元素
        char temp = arr[j];
        arr[j] = arr[j + 1];
        arr[j + 1] = temp;
        swapped = 1;
      }
    }
    // 如果本轮没有交换，说明数组已有序，提前退出
    if (!swapped)
    {
      break;
    }
  }
}

int main()
{
  char arr[] = {'d', 'a', 'c', 'b', 'e'};
  int n = sizeof(arr) / sizeof(arr[0]);

  printf("排序前的数组: ");
  for (int i = 0; i < n; i++)
  {
    printf("%c ", arr[i]);
  }
  printf("\n");

  bubbleSort(arr, n);

  printf("排序后的数组: ");
  for (int i = 0; i < n; i++)
  {
    printf("%c ", arr[i]);
  }
  printf("\n");
  return 0;
}